Circuito con un led que se iluminará poco a poco y se apagará poco a poco usando una señal PWM.
#include <avr/io.h>
#include <util/delay.h>
static inline void initTimer(void) {
TCCR1A |= (1 << WGM10) | (1 << WGM12);
TCCR1B |= (1 << CS11);
TCCR1A |= (1 << COM1A1);
}
int main(void) {
uint8_t brightness = 0;
uint8_t direction;
initTimer();
DDRB |= (1 << PB1);
while (1) {
if (brightness == 0) {
direction = 1;
}
if (brightness == 255) {
direction = -1;
}
brightness += direction;
OCR1A = brightness;
_delay_ms(5);
}
return 0;
}
AVR | PWM | fade out | fade in